package xyz.yinpeng.demo.config;

import com.netflix.loadbalancer.*;
import org.springframework.cloud.netflix.ribbon.RibbonClient;

/**
 * 当使用 @LoadBalanced 注解时
 * 可以指定负载均衡策略
 */
// @RibbonClient(name = "provider-ribbon-client", configuration = ProviderRibbonConfiguration.class)
public class ProviderRibbonConfiguration {

    public IRule rule() {
        // 随机策略
        // return new RandomRule();

        // 轮询策略
        // return new RoundRobinRule();

        // 重试策略
        // return new RetryRule();

        // 最低并发策略
        // return new BestAvailableRule();

        // 可用过滤策略
        return new AvailabilityFilteringRule();

        // 加权响应时间策略
        // return new WeightedResponseTimeRule();

        // 区域权衡策略
        // return new ZoneAvoidanceRule();
    }

}
